Identifying an appropriate connection point for connecting to an application layer session

ABSTRACT

A multi-party application layer session, such as, for example, an electronic conference, is configured to make efficient use of resources associated with lower layer connections that connect computer systems participating in the multi-party application layer session. In response to receiving an invitation to join a multi-party application layer session, a joining computer system calculates a closeness metric value at least to one or more zones of the multi-party application layer session. A closeness metric value is calculated from measured and/or pre-configured characteristics of lower layer connections. The joining computer system identifies an application layer connection point within a specified threshold of closeness to the joining computer system. The joining computer system establishes an application layer connection to the identified application layer connection point. Accordingly, a joining computer system considers the characteristics of lower layer connections when determining where to connect to a multi-party application layer session.

BACKGROUND OF THE INVENTION

1. The Field of the Invention

The present invention relates to computer networks, and morespecifically, to identifying an appropriate connection point forconnecting to an application layer session.

2. Background and Relevant Art

Computer networks have enhanced our ability to communicate and accessinformation by allowing one computer or device (hereinafter bothreferred to as a “computing system”) to communicate over a network withanother computing system using electronic messages. When transferring anelectronic message between computing systems, the electronic messagewill often pass through a protocol stack that performs operations on thedata within the electronic message (e.g., packetizing, routing, flowcontrol). The Open System Interconnect (“OSI”) model is an example of anetworking framework for implementing a protocol stack.

The OSI model breaks down the operations for transferring an electronicmessage into seven distinct “layers,” each designated to perform certainoperations in the data transfer process. While protocol stacks canpotentially implement each of the layers, many protocol stacks implementonly selective layers for use in transferring data across a network.When data is transmitted from a computing system, it originates at theapplication layer and is passed down to intermediate lower layers andthen onto a network. When data is received from a network it enters thephysical layer and is passed up to higher intermediate layers and theneventually received at the application layer. The application layer, theupper most layer, is responsible for supporting applications andend-user processes, such as, for example, electronic conferencingsoftware.

The functionality of lower layers of a protocol stack is typicallyabstracted from the application layer. That is, application data istransferred to and from an application layer through the lower layerswithout exposing the functionality of the lower layers to theapplication layer. Abstraction can make it appear to a number ofapplication layer processes at different computing systems that theapplication layer processes are directly connected to one another (whenin fact lower layers in corresponding protocol stacks process data asthe data transferred between the application layer processes).Accordingly, application layer processes may be viewed as logicallyconnected regardless of the underlying physical connections thatfacilitate communication between the application layers processes.

Often, when computing systems are to communicate with each other, thecomputing systems will first establish a communication session.Establishment of a communication session can include establishing anapplication layer communication session, such as, for example, anelectronic conference. To establish an electronic conference,conferencing applications (e.g., T.120 applications) at each of thecomputing systems logically connect to one another. The logicalconnections typically result in the computing systems being configuredin a logical hierarchy, such as, for example, of a T.120 conferencingsession.

As depicted in FIG. 4B, a logically hierarchy can include a rootcomputing system (or root node), one or more intermediate computingsystems (or intermediate nodes), and one or more leaf computing systems(or leaf nodes). A root computing system is a computing system at thetop of the logical hierarchy (e.g., node A). A leaf computing system isa computing system with no other computing systems below them in thelogical hierarchy (e.g., nodes F, G, H, and D). An intermediate computersystem is a computer system somewhere between the root computing systemand a leaf computing system in the logical hierarchy (e.g., nodes B, E,and C).

A root computing system typically controls the transfer of conferencingdata between the other computing systems in the logical hierarchy. Eachcomputing system in a logically hierarchy can maintain link informationfor sending conferencing data to and receiving conferencing data fromother computing systems that are logically connected to the computingsystem. That is, each computing system can maintain link information forparent and/or child computer systems. For example in FIG. 4B, node E canmaintain link information for communicating with node A (parent) andnodes C and D (children).

Typically, conferencing data originates at an intermediate or leafcomputing system in one branch of the logical hierarchy. Theintermediate or leaf computing system transfers the conferencing data upto its parent computer system. When the parent computer system is notthe root computer system, the parent computer system in turn transfersthe conferencing data up to its parent computer system. The conferencingdata is transferred form parent computer system to parent computersystem until the conferencing data eventually reaches the root computersystem. For example in FIG. 4B, conferencing data originating at node Hcan be transferred from node H, to node C, to node E, to node A (theroot).

The root computing system can transfer received conferencing data down alogical hierarchy to intermediate and leaf computing systems in thelogical hierarchy. For example in FIG. 4B, node A can transferconferencing data down to nodes B and E. Node B can in turn transfer theconferencing data down to nodes F and G. Likewise, node E can in turntransfer the conferencing data down to nodes C and D. Node C can in turntransfer the conferencing data down to node H. Accordingly, during atypical conferencing session, conferencing data flows up to the rootcomputing system and then down from the root computer system to othercomputer systems in the logical hierarchy. This results in all of thecomputer systems sharing the same tree, even if conferencing dataoriginates at an intermediate or leaf computer system.

At times, a computing system participating in an electronic conferencingmay invite another computing system to join the electronic conference.To invite a computing system to join an existing electronic conference,an inviting conferencing application (at an inviting computing system)sends an invitation message to joining conferencing application (at ajoining computing system). To join the electronic conference, thejoining conferencing application uses connection information containedin the invitation message to logically connect to the invitingconferencing application. For example in FIG. 4B, node H could join nodeC resulting in the logical connection between node C and node H.

The resources consumed when transferring conferencing data over somephysical connections (e.g., wide area connections, firewalls, proxies,and bastion hosts) can be relatively expensive compared to resourcesconsumed when transferring data over other physical connections (e.g.,local area connections). The increased expense can be both financial andfrom a resource availability perspective. For example, it may cost morefinancially to transfer conferencing data through firewall 402, acrosswide area data link 403, and/or through firewall 404 than it costsfinancially to transfer conferencing data within local network 411 orlocal network 412. Further, the system and bandwidth resources consumedby transferring conferencing data (which can be bandwidth intensive)through firewall 402, across wide area data link 403, and/or throughfirewall 404 makes these consumed resources potentially unavailable toother modules for the duration of the electronic conference.

Unfortunately, establishment of a logical hierarchy can result in anumber of logical connections spanning across more costly physicalconnections. For example, a number of the logical connections betweenthe nodes in FIG. 4B (e.g., node B to node F, node B to node G, node Ato node E, etc.) span across firewall 402, wide area link 403, andfirewall 404. When multiple logical connections span the same physicalconnection, the same conferencing data may be repeatedly transferredacross the physical connection. For example, conferencing datatransferred from node A to node H would be transferred across firewall402, wide area link 403, and firewall 404 at least three times. Theconferencing data would be transferred from node A to node E (a firsttransfer), from node E to node C (a second transfer), and from node C tonode H (a third transfer). Repeatedly transferring conferencing dataacross a more costly physical connection essentially wastes theresources of physical connection. Therefore systems, methods, computerprogram products, and data structures for joining an application layersession in a manner that promotes efficient use of lower layer resourceswould be advantageous.

BRIEF SUMMARY OF THE INVENTION

The foregoing problems with the prior state of the art are overcome bythe principles of the present invention, which are directed towardsmethods, systems, computer program products, and data structures foridentifying an appropriate connection point for connecting to anapplication layer session. A multi-party application layer session, suchas, for example, a multi-party conferencing session, includes a numberof participating computer systems. Lower layer connections betweenparticipating computer systems can utilize any number of differentnetwork technologies (e.g., Ethernet, Token Ring, IEEE 802.11, etc.),network modules (e.g., firewalls, bastion hosts, etc.), and/or lowerlayer protocols (e.g., Internet Protocol (“IP”), Transmission ControlProtocol (“TCP”), etc.). Further, different participating computersystems can utilize different network technologies, modules, and/orprotocols to participate in the multi-party application layer session.

Conferencing applications at each of the participating computer systemsare logically connected to one another (i.e., application layerconnections are abstracted from lower layer connections) resulting in alogical arrangement of participating computer systems. It may be that aconferencing application at one participating computing system islogically connected to conferencing applications at a number of otherparticipating computing systems. When a participating computer systemdetects that a non-participating computer system has conferencing data(or for any other reason), the participating computer system can invitethe non-participating computer system to join the multi-partyapplication layer session.

Accordingly, an inviting computer system can send an invitation to jointhe multi-party application layer session to a joining computer systemand the joining computer system can receive the invitation. In responseto the invitation, the joining computer system calculates a closenessmetric value at least for each zone of the multi-party application layersession (and potentially for each participating computer system). Acloseness metric value can indicate the representative closeness of thejoining computer system to a zone. A closeness metric value can becalculated based on the characteristics of lower layer connectionsbetween the joining computer system and a corresponding zone. Forexample, a zone on the same local area network as the joining computersystem can be viewed as closer to the joining computer system than azone that is across a wide area link and behind a firewall.

The joining computer system identifies a application layer connectionpoint within a specified threshold of closeness to the joining computersystem. For example, a lower closeness metric value can indicate thejoining computer system is closer to a corresponding zone. On the otherhand, a higher closeness metric value can indicate that the joiningcomputer system is further from a corresponding zone. The joiningcomputer system may identify a computer system within the closest zoneas an application layer connection point within a specified threshold ofcloseness.

The joining computer system establishes an application layer connectionto the identified application layer connection point. For example, ajoining application layer at the joining computer system can establish aconnection to a participating application layer at a participatingcomputer system. When calculated closeness metric values so indicate,the joining computer system can also establish a new zone. Accordingly,a joining computer system connects to an existing multi-partyapplication layer session in a manner that reduces the likelihood ofconferencing data being repeatedly transferred across more expensivelower layer connections.

In some embodiments, application layer data is transferred betweencomputer systems in a manner that conserves resources associated withlower layer connections. A source computer system received an indicationthat application layer data is to be transferred to each participatingcomputer system participating in a multi-party application layersession. The source computer system checks closeness metric values forat least each zone of the multi-party application layer session. Thesource computer system configures a data packet containing applicationlayer data for delivery to a participating computer system based on thelower layer resource cost represented in a checked closeness metricvalue. The source computer system transfers the configured data packettowards the participating computer system.

Additional features and advantages of the invention will be set forth inthe description that follows, and in part will be obvious from thedescription, or may be learned by the practice of the invention. Thefeatures and advantages of the invention may be realized and obtained bymeans of the instruments and combinations particularly pointed out inthe appended claims. These and other features of the present inventionwill become more fully apparent from the following description andappended claims, or may be learned by the practice of the invention asset forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and otheradvantages and features of the invention can be obtained, a moreparticular description of the invention briefly described above will berendered by reference to specific embodiments thereof which areillustrated in the appended drawings. Understanding that these drawingsdepict only typical embodiments of the invention and are not thereforeto be considered to be limiting of its scope, the invention will bedescribed and explained with additional specificity and detail throughthe use of the accompanying drawings in which:

FIG. 1 illustrates a suitable operating environment for the principlesof the present invention.

FIG. 2A illustrates an example network architecture that facilitatesidentifying an appropriate connection point for connecting to anapplication layer session in accordance with the principles of thepresent invention.

FIG. 2B illustrates an example logical arrangement of the computersystems depicted in FIG. 2A.

FIG. 3 illustrates an example flowchart of a method for identifying anappropriate connection point for connecting to an application layersession in accordance with the principles of the present invention.

FIG. 4A illustrates a prior art network.

FIG. 4B illustrates a logical hierarchical tree of the computer systemsdepicted in the prior art network of FIG. 4A.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The principles of the present invention provide for identifying anapplication layer connection point for connecting to an applicationlayer session based on characteristics of lower layer connections. Ajoining computer system receives an invitation to join a multi-partyapplication layer session. The joining computer system calculatescloseness metric values, based on characteristics of lower layerconnections, at least for each zone of the multi-party application layersession (and potentially for every computer system participating in themulti-party application layer session). The joining computer systemidentifies an application layer connection point (e.g., an applicationlayer at a computer system participating in the multi-layer applicationsession) having a closeness metric value within a specified threshold.The joining computer system establishes an application layer connectionto the identified application layer connection point. When calculatedcloseness metric values so indicate, the joining computer system canalso establish a new zone. Based on zone configuration, applicationlayer data can be transferred to computer systems participating in amulti-party application layer session in a manner that conserves lowerlayer resources.

Embodiments within the scope of the present invention includecomputer-readable media for carrying or having computer-executableinstructions or data structures stored thereon. Such computer-readablemedia may be any available media, which is accessible by ageneral-purpose or special-purpose computer system. By way of example,and not limitation, such computer-readable media can comprise physicalstorage media such as RAM, ROM, EPROM, CD-ROM or other optical diskstorage, magnetic disk storage or other magnetic storage devices, or anyother media which can be used to carry or store desired program codemeans in the form of computer-executable instructions, computer-readableinstructions, or data structures and which may be accessed by ageneral-purpose or special-purpose computer system.

When information is transferred or provided over a network or anothercommunications connection (either hardwired, wireless, or a combinationof hardwired or wireless) to a computer system, the connection isproperly viewed as a computer-readable medium. Thus, any such connectionis properly termed a computer-readable medium. Combinations of the aboveshould also be included within the scope of computer-readable media.Computer-executable or computer-readable instructions comprise, forexample, instructions and data which cause a general-purpose computersystem or special-purpose computer system to perform a certain functionor group of functions. The computer-executable or computer-readableinstructions may be, for example, binaries, intermediate formatinstructions such as assembly language, or even source code.

In this description and in the following claims, a “computer system” isdefined as one or more software modules, one or more hardware modules,or combinations thereof, that work together to perform operations onelectronic data. For example, the definition of computer system includesthe hardware modules of a personal computer, as well as softwaremodules, such as the operating system of the personal computer. Thephysical layout of the modules is not important. A computer system mayinclude one or more computers coupled via a network. Likewise, acomputer system may include a single physical device (such as a mobilephone or Personal Digital Assistant “PDA”) where internal modules (suchas a processor and memory) work together to perform operations onelectronic data.

In this description and the following claims, a “communications stack”is defined as a plurality of communication layers, including at least anapplication layer and one lower layer that is below the applicationlayer, that interoperate to transfer data between computer systems.Communication stack is defined to include protocol stacks based aroundthe Open Systems Interconnection (“OSI”) networking framework forimplementing protocols, including protocol stacks that incorporate thefunctionality of a plurality of OSI layers in a single layer.

In this description and in the following claims, “application layerconnection” is defined as a connection between corresponding applicationlayers of two or more communication stacks. An application layerconnection is defined to include connections between applications andend-user processes, such as, for example, connections between real-timeconferencing applications. Application layer connection is defined toinclude any connection that corresponds to functionality at a sessionlayer, a presentation layer, and/or an application layer of the OpenSystem Interconnection (“OSI”) networking framework.

In this description and in the following claims, a “lower layerconnection” is defined as a connection between corresponding lowerlayers (below an application layer) of two of more communication stacks.A lower layer connection is defined to include physical components, suchas, for example, transmitters, receivers, wire, fiber optic cable, hubs,routers, firewalls, proxies, bastion hosts, modems, wireless accesspoints, network interface cards, and system buses, that create a path(e.g., a circuit) for electrical pulses, light, or electromagnetic wavesto travel between two computer systems. A lower layer connection is alsodefined include lower layer protocols, such as for, example, Ethernet,IEEE 802.11, RS 232, Digital Subscriber Line (“DSL”), AsynchronousTransfer Mode (“ATM”), Integrated Services Digital Network (“ISDN”), andData Over Cable Service Interface Specification (“DOCSIS”), that convertelectrical pulses, light, or electromagnetic waves into electronic data(e.g., a bit stream). Lower layer protocols also include protocols, suchas, for example, Internet Protocol (“IP”) and Transmission ControlProtocol (“TCP”), that operate above the physical layer but below theapplication layer. Lower layer connection is defined to include anyconnection that corresponds to functionality at a physical layer, a datalink layer (mediate access control layer and/or logical link controllayer), a network layer, or a transport layer of the OSI networkingframework.

Those skilled in the art will appreciate that the invention may bepracticed in network computing environments with many types of computersystem configurations, including routers, gateways, bastion hosts,firewalls, proxies, personal computers, laptop computers, hand-helddevices, multi-processor systems, microprocessor-based or programmableconsumer electronics, network PCs, minicomputers, mainframe computers,mobile telephones, PDAs, pagers, and the like. The invention may also bepracticed in distributed system environments where local and remotecomputer systems, which are linked (either by hardwired lower layerconnections, wireless lower layer connections, or by a combination ofhardwired and wireless lower layer connections) through a network, bothperform tasks. In a distributed system environment, program modules maybe located in both local and remote memory storage devices.

FIG. 1 and the following discussion are intended to provide a brief,general description of a suitable computing environment in which theinvention may be implemented. Although not required, the invention willbe described in the general context of computer-executable instructions,such as program modules, being executed by computer systems. Generally,program modules include routines, programs, objects, components, datastructures, and the like, which perform particular tasks or implementparticular abstract data types. Computer-executable instructions,associated data structures, and program modules represent examples ofthe program code means for executing acts of the methods disclosedherein.

With reference to FIG. 1, a suitable operating environment for theprinciples of the invention includes a general-purpose computer systemin the form of a computer system 100. Computer system 100 may be, forexample, a personal computer that has been adapted to perform theoperations disclosed herein.

Computer system 100 includes a user input interface 170 that receivesinformation from an input device, such as, for example, a keyboard,microphone, or mouse. An input device can be coupled to user inputinterface 170 so as to enable the entry of information. An input devicecan transfer information over such a coupling in response topreprogrammed data or user manipulation of the input device.

Computer system 100 includes video output interface 150 that provides avideo output signal to external video display devices. Computer system100 may be integrally positioned with or separate from a video displaydevice, such as, for example, a color or monochrome computer monitor. Avideo display device can be coupled to video output interface 150 so asto receive a provided video output signal.

Similarly, computer system 100 includes an audio output interface 130that provides an audio output signal to external audio output devices.Computer system 100 may also be integrally positioned with or separatefrom an audio system, which includes a speaker or other device capableof emitting sound data. An audio system can be coupled to audio outputinterface 130 so as to receive a provided audio output signal.

Computer system 100 includes processing unit 120, which allows forcomplex and flexible general-purpose processing capabilities. Processingunit 120 executes computer-executable instructions designed to implementfeatures of computer system 100, including features of the presentinvention. Processing unit 120 is coupled to system bus 110, which alsointerconnects various other system components, including system memory140.

System memory 140 generally represents a wide variety of volatile and/ornon-volatile memories and may include types of memory previouslydiscussed. However, the particular type of memory used in computersystem 100 is not important to the present invention. Program code meanscomprising one or more program modules may be stored in system memory140. The one or more program modules may include an operating system141, one or more application programs 142, other program modules 143,and program data 144.

Computer system 100 also includes magnetic hard disk drive 127 forreading from and writing to magnetic hard disk 139. The magnetic harddisk drive 127 is connected to system bus 110 by mass storage interface160. Magnetic hard disk drive 127 and magnetic hard disk 139 providenonvolatile storage of computer-executable instructions, datastructures, program modules, and other data for computer system 100. Forexample, magnetic hard disk 139 can store one or more program modulesincluding operating system 141, application programs 142, other programmodules 143, and program data 144.

Computer system 100 is connectable to networks, such as, for example, anoffice-wide or enterprise-wide computer network, an intranet, and/or theInternet. Computer system 100 can exchange data with external sources,such as, for example, remote computer systems and/or remote databasesover such a network.

Computer system 100 includes network interface 180, through whichcomputer system 100 receives data from external sources and/or transmitsdata to external sources. As illustrated in FIG. 1, network interface180 facilitates the exchange of data with remote computer system 183 viaconnection 182 (which represents either a lower layer connection or anapplication layer connection). Connection 182 represents a portion of anetwork, and remote computer system 183 represents a node of thenetwork. For example, remote computer system 183 may be a joiningcomputer system that joins a multi-party application layer session byestablishing an application layer connection to computer system 100. Onthe other hand, remote computer system 183 may be an inviting computersystem that invites computer system 100 to join a multi-partyapplication layer session.

Likewise, computer system 100 includes serial port interface 190,through which computer system 100 receives data from external sourcesand/or transmits data to external sources. Serial port interface 190 iscoupled to modem 191 via connection 159 (which represents either a lowerlayer connection or an application layer connection), through whichcomputer system 100 receives data from and/or transmits data to externalsources. As illustrated in FIG. 1, serial port interface 190 and modem191 facilitate the exchange of data with remote computer system 193 viaconnection 192 (which represents either a lower layer connection or anapplication layer connection). Connection 192 represents a portion of anetwork, and remote computer system 193 represents a node of thenetwork. For example, remote computer system 193 may be a joiningcomputer system that attempts to join a multi-party application layersession by establishing an application layer connection to computersystem 100. On the other hand, remote computer system 193 may be aninviting computer system that invites computer system 100 to join amulti-party application layer session.

While FIG. 1 represents a suitable operating environment for the presentinvention, the principles of the present invention may be employed inany system that is capable of, with suitable modification if necessary,implementing the principles of the present invention. The environmentillustrated in FIG. 1 is illustrative only and by no means representseven a small portion of the wide variety of environments in which theprinciples of the present invention may be implemented.

When a mass storage device, such as, for example, magnetic hard disk139, is coupled to computer system 100, such modules and associatedprogram data may also be stored in the mass storage device. In anetworked environment, program modules depicted relative to computersystem 100, or portions thereof, can be stored in remote memory storagedevices, such as, for example, system memory and/or mass storage devicesassociated with remote computer system 183 and/or remote computer system193. Execution of such modules may be performed in a distributedenvironment as previously described.

FIG. 2A illustrates an example network architecture 200 that facilitatesidentifying an appropriate connection point for connecting to anapplication layer session. As depicted in network architecture 200,computer systems 211, 212, and 213 are connected to network accessmodules 218 by corresponding lower layer connections 271, 272, and 273respectively. Similarly, computer systems 221, 222, 223, and 242 areconnected to network access modules 228 by corresponding lower layerconnections 274, 275, 276, and 283 respectively. Similarly, computersystems 231, 232, 233, 234, and 235, are connected to network accessmodules 238 by corresponding lower layer connections 282, 281, 279, 278,and 277 respectively. Network modules 218, 228, and, 238 are connectedto network 298 (e.g., a Wide Area Network (“WAN”)) by correspondinglower layer connections 291, 292 and 293 respectively. Lower layerconnections 291, 292, and 293 can be wide area connections. Eachcomputer system in network architecture 200 can include an applicationlayer (e.g., a conferencing application) for participating inmulti-party application layer sessions (e.g., an electronic conference)

Network access modules can include one or more hardware and/or softwaresecurity modules (e.g., of a gateway, bastion host, firewall, etc.) thatprevent unauthorized access to computer systems connected to the networkaccess modules. For example, network access modules 218 can includemodules of a firewall that is configured to prevent unauthorized accessto computer systems 211, 212, and 213. Network access modules can alsoinclude one or more hardware and/or software connectivity modules (e.g.,of a router, switch, hub, etc.) that connect computer systems such thatdata can be transferred between the connected computer systems. Forexample, network access modules 238 can include modules of a hub thatconnects computer systems 231, 232, 233, 234, and 235 in a commonEthernet segment. Additionally, network access modules 238 can includemodules of a router that connects the common Ethernet segment to lowerlayer connection 293. It may also be that network access modulescollectively represent a plurality of security and/or connectivitymodules (e.g., one or more firewalls, one or more bastion hosts, and oneor more routers). A collection of such modules can be included in aDemilitarized Zone (“DMZ”) for preventing unauthorized to computersystems. For example, network modules 228 can represent a DMZ that isconfigured to prevent unauthorized access to computer systems 221, 222,223, and 242.

FIG. 2B illustrates an example logical arrangement 201 of computersystems depicted network architecture 200. Logical arrangement 201 canrepresent the logical arrangement of computer systems participating inan electronic conference. At times, computer systems depicted in networkarchitecture 200 may have left or joined the electronic conference.Accordingly, logical arrangement 201 may be the result of joiningcomputer systems establishing application layer connections to theelectronic conference and leaving computer systems tearing downapplication layer connections to the electronic conference.

Depicted in logical arrangement 201 are zones 210, 220, and 230. Eachzone includes computer systems that are within a representativecloseness of one another. Within logical arrangement 201, applicationlayers can communicate with one another through application layerconnections (e.g., between conferencing applications at each computersystem) that are abstracted from lower layer connections depicted innetwork architecture 200. For example, zone 210 includes computersystems 211, 212, and 213 that are connected by application layerconnections 257 and 258. Zone 220 includes computer systems 221, 222,and 223 that are connected by application layer connections 261 and 262.Zone 230 includes computer systems 231, 232, 233, 234, and 235 that areconnected by application layer connections 264, 265, 266, and 267. Eachapplication layer connection in logical arrangement 201 can represent aconnection between application layers at different computer systems. Forexample, application layer connection 265 can represent a connectionbetween a conferencing application at computer system 233 and acorresponding conferencing application at computer system 234.

Further, application layer connection 259 connects computer system 213and computer system 221, thereby also connecting zone 210 to zone 220.Similarly, application layer connection 263 connects computer system 222and computer system 233 and thereby also connecting zone 220 to zone230. Accordingly, when conferencing data is to be transferred tocomputer systems in logical arrangement 201, the conferencing data canbe transferred between zones a reduced number of times, for example,once.

Determining a computer system's closeness to other computer systems caninclude calculating a closeness metric value based on characteristics oflower layer connections between the computer systems. For example, acloseness metric value representing computer system 212's closeness tocomputer system 213 can be calculated based on the characteristics oflower layer connection 273, network modules 218, and lower layerconnection 272. Characteristics of a lower layer connection can includeavailable bandwidth, maximum bandwidth, latency, supported protocols,resource consumption of network modules, etc. For example, whencalculating a closeness metric value representing computer system 211'scloseness to computer system 234, the cost (e.g., either financially orin consumed resources) of transferring conferencing data through networkmodules 218 and network modules 238 can be considered.

A closeness metric value can be a single value calculated from aplurality of appropriate lower layer connection characteristics. Theweight of different network characteristics can be varied by aconference administrator or user so that appropriate closeness metricvalues are calculated for a given configuration of lower layerconnections. The weights of reduced bandwidth and/or increased latencylower layer connections can be selected so that computer systemsseparated by reduced bandwidth and/or increased latency lower layerconnections are viewed as having reduced closeness. On the other hand,weights of increased bandwidth and/or reduced latency lower layerconnections can be selected to that computer systems separated byincreased bandwidth and/or reduced latency lower layer connections areviewed as having increased closeness. For example, computer systemsseparated by a 100 Mbps (megabits per second) Ethernet segment can beviewed as closer than computer systems separated by a 56 Kbps (kilobitsper second) modem connection.

Similarly, when resources of network modules are more expensive,closeness metric values for computer systems on opposite sides of thenetwork modules can indicate that the computer systems have reducedcloseness. On the other hand, when resources of network modules are lessexpensive, closeness metric values for computer systems on oppositesides of the network modules can indicate the computer systems haveincreased closeness. For example, computer systems separated by a singlefirewall can be viewed as closer than computer systems separated a DMZhaving a plurality of firewalls and bastion hosts.

Table 1 is an example of closeness metric values for computer systemsdepicted in network architecture 200.

TABLE 1 CS 211 CS 212 CS 213 CS 221 CS 222 CS 223 CS 231 CS 232 CS 233CS 234 CS 235 CS 211 0 1 1 7 7 7 9 9 9 9 9 CS 212 1 0 1 7 7 7 9 9 9 9 9CS 213 1 1 0 7 7 7 9 9 9 9 9 CS 221 7 7 7 0 1 1 8 8 8 8 8 CS 222 7 7 7 10 1 8 8 8 8 8 CS 223 7 7 7 1 1 0 8 8 8 8 8 CS 231 9 9 9 8 8 8 0 1 1 1 1CS 232 9 9 9 8 8 8 1 0 1 1 1 CS 233 9 9 9 8 8 8 1 1 0 1 1 CS 234 9 9 9 88 8 1 1 1 0 1 CS 235 9 9 9 8 8 8 1 1 1 1 0

In Table 1, the abbreviation “CS” represents the term “computer system.”Accordingly, each row and column in table one corresponds to a computersystem in network architecture 200. For example, “CS 223” corresponds tocomputer system 223. Table 1 includes closeness metric valuesrepresenting the closeness of computer systems in network architecture200 to other computer systems in network architecture 200. For example,the row labeled CS 213 indicates computer system 213's closeness toother computer systems included in network architecture 200.

In Table 1, lower closeness metric values indicate computer systems withincreased closeness (i.e., that are closer together), while highercloseness metric values indicate computer systems with decreasedcloseness (i.e., that are further apart). For example, computer systemshaving a closeness metric value of 1 are viewed as being closer to oneanother than computer systems having a closeness metric value of 7. Acloseness metric value of 0 indicates that a computer system is closerto itself than any other computer system. Although the closeness metricvalues in Table 1 range from 0 to 9 with lower values representingincreased closeness and higher values representing decreased closeness,virtually any range or configuration of values can be used to representrelative closeness between computer systems.

As depicted in Table 1, computer system 213 has a closeness metric valueof 1 for computer systems 211 and 212, a closeness metric value of 7 forcomputer systems 221, 222, 223, and a closeness metric value of 9 forcomputer systems 231, 232, 233, 234, 235. These depicted closenessmetric values indicate that computer system 213 is relatively closer tocomputer systems in zone 210 (closeness metric value of 1) than computersystems in zone 220 (closeness metric value of 7) and computer systemsin zone 230 (closeness metric value of 9). These depicted closenessmetric values further indicate that computer system 213 is relativelycloser to computer systems in zone 220 (closeness metric value of 7)than computer systems in zone 230 (closeness metric value of 9). Thesedepicted closeness metric values for computer system 213 may indicate,for example, that computer systems in zone 210 are part of the sameEthernet segment. These depicted closeness metric values for computersystem 213 may further indicate, for example, that the Ethernet segmentis separated from computer systems in zones 220 and 230 by reducedbandwidth lower layer connections and/or network access modules havingmore expensive resource costs.

When a joining computer system is to join a multi-party applicationlayer session, such as, for example, an electronic conference, thejoining computer system can determine the zone that is closest to thejoining computer system. FIG. 3 illustrates a flowchart of a method 300for identifying a connection point for connecting to an applicationlayer session. The method 300 will be described with respect to thecomputer systems depicted in network architecture 200.

Method 300 includes an act of receiving an invitation to join amulti-party application layer session (act 301). Act 301 can include ajoining computer system receiving an invitation message from an invitingcomputer system. The inviting computer system can be a computer systemthat is establishing a new electronic conference or that is alreadyparticipating in an existing electronic conference. For example asdepicted by invitation 251, application layer 214 can invite computersystem 242 to join an electronic conference represented by logicalarrangement 201.

The method 300 includes a functional result-oriented step fordetermining an appropriate connection point for connecting to themulti-party application layer session (step 305). Step 305 can includeany corresponding acts for accomplishing the result of determining anappropriate connection point for connecting to the multi-partyapplication layer session. However, in the illustrated example of FIG.3, step 305 includes a corresponding act of calculating a closenessmetric value for at least each zone of the multi-party application layersession (act 302). Act 302 can include calculating closeness metricvalues from characteristics of lower layer connections that connect thejoining computer system to a corresponding zone.

For example, computer system 242 can calculate a closeness metric valuefor computer systems in zones 210, 220, and 230. A closeness metricvalue can be calculated at least in part based on pre-configuredcharacteristics, such as, for example, cost. For example, a hop acrossfirewall and proxy modules represented by network modules 228 can have apre-configured associated cost (financial and/or consumed resources).The pre-configured associated cost can be used to calculate a closenessmetric value.

A closeness metric value can also be calculated at least in part basedon network measurements. As depicted by lower layer connectionmeasurements 252A, 252B, and 252C, computer system 242 measurescharacteristics of lower layer connections between computer system 242and zones 210, 230, and 220 respectively. For example, computer system242 can ping computer system 232 to measure round trip times for datapackets traveling over a data path including lower layer connection 283,network access modules 228, lower layer connection 292, network 298,lower layer connection 293, network access modules 238, and lower layerconnection 281. A measured round trip time can be used to calculate acloseness metric value. Other measurements can be taken to detect andmap routes between computer systems (e.g., by use of a trace routeutility). Detected and mapped routes can also be used to calculate acloseness metric value.

For example, computer system 242 can use pre-configured and measuredcharacteristics of lower layer connection 283, network modules 228,lower layer connection 292, network 298, lower layer connection 291,network device modules 218, and lower layer connection 271 to calculatea closeness metric value for computer system 211. Alternately, computersystem 242 can calculate a closeness metric value to zone 210. Whencalculating a closeness metric value for a zone, computer system 242 maynot use characteristics of lower layer connections behind network accessmodules that represent a zone boundary. For example, when calculating acloseness metric value for zone 210, computer system 242 may not usecharacteristics of lower layer connections behind network modules 218(which can be viewed as representing zone boundary 219).

It may be that an invitation message received by computer system 242contains a data structure, similar to that in depicted in Table 1,representing the closeness of computer systems participating in amulti-party application layer session. The data structure can includeone or more computer system identifier fields, each representing acomputer system identifier that identifies a participating computersystem participating in a multi-party application layer session. Acomputer system identifier can be, for example, a network address (e.g.,an IP address) or Uniform Resource Identifier (“URI”). The datastructure can also include one or more closeness fields, eachrepresenting a closeness metric value indicating the closeness of twoparticipating computer systems represented in computer system identifierfields.

Accordingly, computer system 242 can identify, based on computer systemswithin a specified closeness threshold of one another, computer systemsthat are in the same zone. For example, based on the closeness metricvalue of 1, computer system 242 can identify that computer systems 211,212, and 213 are probably in the same zone. Thus, calculating acloseness metric value between computer system 242 and each of computersystems 211, 213, and 213, may be viewed as redundant.

Step 305 also includes a corresponding act of identifying an applicationlayer connection point within a specified threshold of closeness to thejoining computer system (act 303). Act 303 can include identifying anapplication layer connection point at a computer system that is toparticipate (or is participating) in the multi-party application layersession. An application layer connection point can be an applicationlayer (e.g., a conferencing application) at a computer system that is toparticipate or that is participating in the multi-party applicationlayer session.

It may be that a joining computer system receives an invitation messagefrom an inviting computer system that is not participating in anexisting multi-party application layer session. Accordingly,establishment of multi-party application layer session results after thejoining computer system establishes an application layer connection tothe inviting computer system. When establishing an application layerconnection to an inviting computer system, the joining computer systemcan join a zone that includes the inviting computer system or canestablish a new zone. When a joining computer system is within aspecified threshold of closeness to an inviting computer system, thejoining computer system may join a zone that includes the invitingcomputer system. On the other hand, when a joining computer system isnot within a specified threshold of closeness to the inviting computersystem, the joining computer system can establish a new zone. Thus,although there is a single application layer connection point (i.e., theinviting computer system) there is no requirement that the invitingcomputer system and joining computer system be included in the samezone.

Similarly, when an existing multi-party application layer sessionincludes a single existing zone, a joining computer system can join theexisting zone based on a threshold of closeness to the zone. Forexample, if zone 230 were the only zone in logical arrangement 201, zoneboundary 239 could be expanded to include a joining computer system. Onthe other hand, a joining computer system can establish a new zone basedon a threshold of closeness to the zone. Thus, a joining computer systemcan establish an application layer connection to a computer system in anexisting zone but may nonetheless also establish a new zone.

When an existing multi-party application layer session includes aplurality of zones, such as, for example, an electronic conferencerepresented by logical arrangement 201, an identified application layerconnection point can be at a computer system in the zone that is closestto the joining computer system. For example, computer system 242 cancompare calculated closeness metric values for zones 210, 220, and 230to determine the zone that is closest to computer system 242. Referringback to network architecture 200, computer system 242 is physicallylocated on the same side of network modules 228 (a lower layerconnection potentially having a high pre-configured cost) as computersystems 221, 222, and 223. Thus, computer system 242 may identify zone220 as the zone that is closest to computer system 242. Accordingly,computer system 242 can identify an application layer connection point(e.g., a conferencing application) at one of the computer systems withinzone 220.

The method 300 includes an act of establishing an application layerconnection to the application layer connection point (act 304). Act 304can include the joining computer system establishing an applicationlayer connection that enables the joining computer to participate in themulti-party application layer session. For example as depicted byapplication layer connection establishment 254, application layer 244establishes an application layer connection to application layer 224.The established application layer connection can enable computer system252 to participate in a conferencing session represented by logicalarrangement 201. If computer system 242 also joins zone 220, zoneboundary 229 can be expanded to include computer system 242.Accordingly, a joining computer system can connect to an existingmulti-party application layer session in a manner that reduces thelikelihood of conferencing data being repeatedly transferred acrosslower layer connections that potentially have higher resource costs.

In some embodiments, application layer data is transferred betweencomputer systems in a manner that conserves resources associated withlower layer connections. A computer system receives an indication thatapplication layer data, such as, for example, conferencing data, is tobe transferred to each participating computer system participating in amulti-party application layer session. For example, computer system 222can receive an indication from application layer 224 that applicationlayer 224 has conferencing data that is to be transferred to othercomputer systems in logical hierarchy 201. When application layer dataoriginates at a computer system (i.e., the computer system is the sourceof the application layer data), the computer system can be viewed as asource computer system. For example, when conferencing data originatesat application layer 224, computer system 222 can be viewed as a sourcecomputer system.

Closeness metric values are checked for at least each zone of themulti-party application layer session. When a source computer system hasapplication layer data to transfer, the source computer system candetermine zone configuration, such as, for example, by checkingcloseness metric values similar to those contained in Table 1. Based onzone configuration, the source computer system determines how theapplication layer data can be delivered such that the application layerdata is transferred between zones a reduced number of times, potentiallyonly once. For example, when application layer 224 has conferencing datato deliver to other computer systems in logical arrangement 201,computer system 222 can check closeness metric values to determine whatcomputer systems are in the same zone and what computer systems are indifferent zones.

Accordingly, a data packet containing application layer data isconfigured for delivery to a participating computer system. For example,application layer 224 can configure data packets containing conferencingdata such that the data packets are transferred between zone 220 andzone 210 only once and between zone 220 and zone 230 only once. A sourcecomputer system (e.g., computer system 222) can configure data packetsby including routing information in a data stream header. The routinginformation can indicate to other computer systems how to forward thedata packet.

For example, application layer 224 can configure data packets(containing conferencing data) such that the data packets will be routedfrom computer system 222, to computer system 223, to computer system221, to computer system 213, to computer system 211, to computer system212. The routing information in a data packet can indicate tointermediate computer systems how the data packet is to be forwarded.For example, a portion of routing information in a data packet canindicate to computer system 221 that computer system 221 is to forwardthe data packet to computer system 213. In a similar manner, applicationlayer 224 can also configure data packets for transfer to the computersystems in zone 230.

The configured data packet is transferred towards the participatingcomputer system. When computer system 222 is the source computer system,data packets can be delivered to computer systems in zone 210 bytransferring the data packets across lower layer link 291 and throughnetwork access modules 218 only once. Similarly, when computer system222 is the source computer system, data packets can be delivered tocomputer systems in zone 230 by transferring the data packets acrosslower layer connection 293 and through network access modules 238 onlyonce. When computer system 222 is the source computer system, it mayalso be that data packets are transferred through network access modules228 and across lower layer link 292 only once. For example, applicationlayer 224 may configure a data packet (containing conferencing data)such that the data packet is to be delivered to a plurality of differentzones. Application layer 224 can include routing information that causesa router (or other appropriate network device) in network 298 totransfer a one copy the data packet to computer systems in zone 210 andanother copy of data packet to computer systems in zone 230.

When a different source computer system, such as, for example, computersystem 234, receives an indication that application layer data is to betransferred, zone configuration is determined (e.g., by checkingcloseness metric values) from the perspective of the different sourcecomputer system. Based on the zone configuration, the different sourcecomputer system determines how data packets (e.g., containingapplication layer data) can be transferred such that the data packetsare transferred between zones a reduced number of times. For example,when computer system 234 has conferencing data to send to other computersystems in logical arrangement 201, computer system 234 can checkcloseness metric values to determine what computer systems are in thesame zone and what computer systems are in different zones. Accordingly,computer system 234 can configure data packets such that the datapackets are transferred between zones a reduced number of times.

When appropriate, a computer system in zone 230 (the zone that containscomputer system 234) can establish a new application layer connection tofurther conserve lower layer resources. For example, computer system 233may determine, after checking closeness metric values, that anapplication layer connection from computer system 233 to 212 wouldfurther reduce the lower layer resource cost of transferring datapackets from zone 230 to zone 210. That is, the data packets would nothave to be transferred through zone 220.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by the foregoing description. Allchanges, which come within the meaning and range of equivalency of theclaims, are to be embraced within their scope.

1-34. (canceled)
 35. In a source computer system that is networkconnectable to at least one other participating computer system suchthat the source computer system and the at least one other participatingcomputer system are participating in an multi-party application layersession, a method for the source computer system to configureapplication layer data for transfer to the at least one otherparticipating computer system in a manner that conserves resourcesassociated with lower layer connections, the method comprising:receiving an indication that application layer data is to be transferredto each participating computer system participating in the multi-partyapplication layer session; identifying zones of participating computersystems of the multi-party application layer session wherein each zoneis connected to another zone through a participating computer system ofthat zone; and for each identified zone other than the zone of thesource computer system, checking closeness metric values for theparticipating computer systems of the zone of the multi-partyapplication layer session, each closeness metric value representing alower layer resource cost associated with transferring the applicationlayer data from the source computer system to a participating computersystem of the zone; configuring a data packet containing applicationlayer data for delivery to a designated participating computer system ofthe zone, the data packet being configured based on a lower layerresource cost represented in a checked closeness metric value; andtransferring the configured data packet towards the designatedparticipating computer system of the zone wherein upon receiving thetransferred data packet, the designated participating computer system ofthe zone transfers the application layer data to the other participatingcomputer systems of the zone.
 36. The method as recited in claim 35,wherein the receiving of an indication that application layer data is tobe transferred comprises receiving an indication that conferencing datais to be transferred.
 37. The method as recited in claim 35, wherein theconfiguring of a data packet containing application layer data fordelivery to a participating computer system comprises routinginformation in a data stream header to indicate to intermediate computersystems how the data packet is to be forwarded.
 38. A computer programproduct for use in a source computer system that is network connectableto other participating computer systems such that the source computersystem and the other participating computer systems are participating inan multi-party application layer session, the computer program productfor implementing a method for the source computer system to configureapplication layer data for transfer to the other participating computersystems in a manner that conserves resources associated with lower layerconnections the computer program product comprising one or morecomputer-readable media having stored thereon computer executableinstructions that, when executed by a processor, cause the sourcecomputer system to perform the following comprising: identify zones ofparticipating computer systems of the multi-party application layersession wherein each zone is connected to another zone through aparticipating computer system of that zone; receive an indication thatapplication layer data is to be transferred to each participatingcomputer system participating in the multi-party application layersession; check closeness metric values for participating computersystems of the identified zones of the multi-party application layersession to designate a participating computer of each zone, eachcloseness metric value representing a lower layer resource costassociated with transferring the application layer data from the sourcecomputer system to a participating computer system in the zone;configure a data packet containing application layer data for deliveryto the designated participating computer system of a zone, the datapacket being configured based on a lower layer resource cost representedin a checked closeness metric value; and transfer the data packettowards the designated participating computer system of the zone so thatthe designated participating computer system of a zone transfers theapplication layer data to the other participating computer systems ofthat zone.
 39. The computer program product as recited in claim 38,wherein the one or more computer-readable media are physical media. 40.The computer program product as recited in claim 38, wherein the one ormore computer-readable media include system memory.
 41. The computerprogram product as recited in claim 38 wherein the source computersystem transfers the data packet to only one participating computersystem of a zone.
 42. The computer program product as recited in claim38 wherein the closeness metric value for the source computer system anda participating computer system is calculated from characteristics ofthe lower layer connection between the source computer system and theparticipating computer system.
 43. The computer program product asrecited in claim 38 wherein the identifying of zones includes determineswhich participating computer systems have a closeness metric value thatare within a specified threshold of closeness.
 44. The computer programproduct as recited in claim 38 wherein the zones are identified based oncloseness metric values stored in a data structure that contains acloseness metric value for each pair of participating computer systems.45. A source computer system for, while participating in an multi-partyapplication layer session, configuring application layer data fortransfer to other participating computer system of the multi-partyapplication layer session, the participating computer system beingconnected via lower layer connections, comprising: a component thatidentifies zones of participating computer systems of the multi-partyapplication layer session wherein each zone is connected via a lowerlayer connection to another zone through a participating computer systemof that zone; a component that receives an indication that applicationlayer data is to be transferred to each participating computer systemparticipating in the multi-party application layer session; a componentthat checks closeness metric values for a participating computer systemof the identified zones of the multi-party application layer session,each closeness metric value representing a lower layer resource costassociated with transferring the application layer data from the sourcecomputer system to another participating computer system; and acomponent that, for each zone, selects a participating computer systemof that zone; configures a data packet containing application layer datafor delivery to the selected participating computer system of that zone;and transfers the data packet to the selected participating computersystem of that zone so that the selected participating computer systemof that zone transfers the application layer data to the otherparticipating computer systems of that zone wherein the components areimplemented as computer-executable instructions stored in memory of thecomputer system for execution by a processor of the computer system. 46.The source computer system of claim 45 wherein the source computersystem transfers the data packet to only one participating computersystem of a zone.
 47. The source computer system of claim 45 wherein thecloseness metric value for a pair of participating computer systems iscalculated from characteristics of the lower layer connection betweenthe participating computer systems.
 48. The source computer system ofclaim 45 wherein the identifying of zones includes determines whichparticipating computer systems have a closeness metric value that arewithin a specified threshold of closeness.
 49. The source computersystem of claim 45 wherein the zones are identified based on closenessmetric values stored in a data structure that contains a closenessmetric value for each pair of participating computer systems.